Mac环境下利用Python + Selenium实现自动登录签到(1)

目录

  • 前言
  • 环境搭建
  • Selenium模块下载
  • webdriver下载
  • 实例测试
  • 踩坑
  • 继续学习

前言

目前在找资料时,由于论坛对新人有些限制,不能访问某些主题,故有了此教程,以此来实现每天自动登录签到来增长积分和威望。

环境搭建

Python + Selenium + Webdriver实现自动登录并签到(后续更新Mac下定时任务)

Selenium模块下载

1
2
pip install Selenium
pip install -i https://pypi.doubanio.com/simple/ selenium #备用地址

Webdriver下载

查看Chrome版本
  1. 打开Chrome浏览器输入:Chrome://settings/help查看当前Chrome版本。
  2. 下载对应的Chromedriver版本
  • 下载地址,见上面的Chrome驱动下载地址。
  • 选择Mac系统的Chromedriver
  • 直接解压该文件
  1. 把Chromedriver放在usr/local/bin目录下
  • 这个目录是隐藏的,所以随便打开一个Finder,然后Command+Shift+G
  • 直接把Chromedriver放进来
  1. 代码测试
    1
    2
    3
    4
    5
    6
    7
    # -*- coding:utf-8 -*-
    # Author:Burro-CMD

    from selenium import WebDriver

    driver = webdriver.Chrome()
    driver.get("http://www.baidu.com")
    如下图所示,出现‘Chrome正受到自动测试软件的控制’,就说明已经安装成功了。

实例测试

利用Python + Selenium + Webdriver实现自动登录掌上百科并签到。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import time
from selenium import webdriver


def denglu_luntan(driver, user, pwd):
"""登录论坛

利用 WebDriver 找到登陆窗口模拟登陆操作

Args:
driver:初始化的 webdriver
user:用户名
pwd:登陆密码

Returns:
无,仅单独抽取执行登陆操作
"""
user_box = driver.find_element_by_name('username')
user_box.send_keys(user)
passwd_box = driver.find_element_by_name('password')
passwd_box.send_keys(pwd)
# time.sleep(2)
load_box = driver.find_element_by_css_selector('.pn.vm')
load_box.click()


def do_sign():
"""执行签到操作

利用 WebDriver 找到签到的表情和输入框,并执行签到操作

Args:


Returns:
无,执行签到操作后正常退出
"""
driver = webdriver.Chrome()
driver.set_window_position(20,40) #设置窗口的位置
driver.set_window_size(1000,600) #设置窗口的尺寸

driver.get('https://www.pdawiki.com/forum/forum.php')
time.sleep(1)
denglu_luntan(driver, '你的用户名', '你的密码')
time.sleep(1)
# 跳转到每日签到
qiandao_png = driver.find_element_by_id('mn_N462e')
qiandao_png.click()
# 选择心情图片
xin_qing = driver.find_element_by_id('kx')
xin_qing.click()
# 选择想说模式
duanyu_input = driver.find_element_by_id('todaysay')
# 输入想说的内容
duanyu_input.send_keys('撸起袖子加油干,未来是你们的')

time.sleep(1)
# 找到"开始签到"按钮
btn_png = driver.find_element_by_xpath(
'//*[@id="qiandao"]/table/tbody/tr/td/div/a/img')
# 寻找XPath时,先搜索定位到"qiandao",再右击选择copy XPath

# 点击
btn_png.click()
# 等待
time.sleep(1)
# 关闭浏览器
driver.quit()


if __name__ == '__main__':

踩坑

  1. 定位元素的确定
    本例中使用到的定位有:
  • id定位:
    find_element_by_id(“id值”);id属性是唯一的
    1
    driver.find_element_by_id('mn_N462e')
  • name定位
    元素的名称,find_element_by_name(“name值”);name属性值在当前页面可以不唯一
    1
    driver.find_element_by_name('username')
  • XPath定位
    利用元素属性定位:
    1
      find_element_by_xpath(".//*[@id='Title']"),这里是用的id,也可以用元素其他能够唯一标识的属性,不局限于idnameclass这些;*代表的是标签名,不指定时就可以用*代替

继续学习

  • 定位元素的其他方式
  • Mac下定时任务

参考网站:

  1. 利用Python + Selenium实现自动登录签到:
    https://cloud.tencent.com/developer/article/1592562
  2. 手把手教你搭建 Selenuim 自动化环境:
    https://mp.weixin.qq.com/s?__biz=MzI5Nzk2ODc0Ng==&mid=2247483847&idx=1&sn=4c034608dd1f3b4555253d36b5daa371&chksm=ecadb4c2dbda3dd431539f4e63ec731080d3ca6c9393c8277ecabed3d5d48c238362673cc2e4&scene=21#wechat_redirect
  3. WebDriver–定位元素的8中方式:https://www.cnblogs.com/i969639/p/11201174.html
  4. Mac安装Chromedriver: https://www.cnblogs.com/lilyo/p/11959494.html
  5. Selenium webdriver的环境配置:https://www.cnblogs.com/qq834761298/p/12169476.html
0%